深度学习三人行(第14期)----RNN输入输出的组合有多任性
上期,我们一起初步认识了循环卷积神经网络RNN的循环神经元的相关知识,
深度学习三人行(第13期)----初识循环神经网络(RNN)
这一期,我们继续揭开RNN神秘面纱,学习的路上我们多多交流,共同进步。本期主要内容如下:
RNN之记忆单元
RNN之输入输出流
一. RNN之记忆单元
从上期我们了解到,t时刻中RNN的一个循环神经元的输出是之前所有时刻输入的函数,我们可以把这理解成一种记忆形式。如果神经网络的一部分能够跨越时间,保留之前时刻的状态,那么我们称之为记忆单元。一个简单的循环神经元或者一层循环神经元是一个非常简单基础的记忆单元,随后的学习中,我们会逐步学习到更为复杂和有用的记忆单元。
一般情况下,一个记忆单元的状态在时刻t记为h(t)(其中h为hidden的意思),h(t)是在当前时刻的一些输入和之前时刻的状态的函数:
在当前时刻的输出记为Y(t),也是当前时刻的输入和之前时刻的状态的函数。在我们当前所讨论的记忆单元的形式的情况下,当前状态是和当前输出相等的,但是更为复杂的记忆单元的情况下,往往是不一样的。如下图:
二. 输入输出流
一个RNN网络能够同时又一个序列的输入并且产生一个序列的输出,如下图左上的网络。这种类型的网络在预测时序信号的时候往往比较有用,比如股票预测,我们输入前N天的股票价格信息,它就能产生往未来推迟一天的的股票信息(输出为从N-1天到明天)。
或者我们可以对该网络输入一个时序信号,但是忽略除了最后一个输出之外的其他输出(见下图右上网络)。也就是说这是一个序列到向量的网络。比方说我们对该网络输入一个影评的序列信息,网络可以输出一个喜好分数(-1(hate),1(love))。
相反的,我们还可以对网络在开始的时候仅输入一个向量信号,其他时刻的输入均为0,而输出的是一个序列(见上图左下网络),这是一个向量到序列的网络。比如,这个网络的输入可以是一个图片,而输出是图片的标题。
最后,我们可以做一个序列到向量的网络(叫做编码),后面紧跟着一个向量到序列的网络(叫做解码)的网络(见上图右下网络)。这种网络在将一个句子从一种语言翻译到另一种语言的时候比较有用,我们可以将某种语言的一个句子输入到该网络中,然后该网络的编码部分将这个句子转成一个向量表示,然后解码部分再将向量转换为另外一种语言的一个句子。这种编码解码的两步网络成为编码解码器,在句子翻译中,通常会比序列到序列(上图左上网络)的网络结构表现要好很多。因为一个句子的最后一个字能够影响第一个字的翻译,所以我们需要听完整个句子,才能更好的翻译出来。
三. 小结
今天,我们一起学习了循环神经网络的记忆单元,以及输入输出序列构成的不同的网络,是不是挺有意思的?自信心爆棚了?还等什么,下期我们一起实战一下吧。希望本期的知识能够对我们有所帮助,在学习的路上,我们共同进步,多谢有你。
(如需更好的了解相关知识,欢迎加入智能算法社区,在“智能算法”公众号发送“社区”,即可加入算法微信群和QQ群)